home *** CD-ROM | disk | FTP | other *** search
/ Hackers Handbook - Millenium Edition / Hackers Handbook.iso / files / c_scripts / apoc-crack.c < prev    next >
C/C++ Source or Header  |  1998-12-05  |  6KB  |  218 lines

  1. /* apoc-crack.c by Adam Rogoyski (apoc@laker.net) Temperanc on EFNet irc
  2.  * Copyright (C) 1997 Adam Rogoyski
  3.  * Simple Brute Force unix password cracker, tries every printable 7-bit
  4.  * ascii characters.  
  5.  * warning: This program may take thousands of years to finish one run.
  6.  * usage: ./apoc-crack [file with encrypted password in it]
  7.  * compile: gcc -o apoc-crack apoc-crack.c
  8.  * --- GNU General Public License Disclamer ---
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  */
  18.  
  19. #include <crypt.h>
  20. #include <stdio.h>
  21. #include <stdlib.h>
  22. #include <string.h>
  23. #include <stdlib.h>
  24. #include <unistd.h>
  25.  
  26. int
  27. main (int argc, char **argv)
  28. {
  29.    char salt[3];
  30.    char encrypted[14];
  31.    FILE *fp;
  32.    char *temp = malloc(14 * sizeof(char));
  33.    char temppw[9];
  34.    int flag = 0;
  35.    char i = 0;     char j = 0;     char k = 0;     char l = 0;
  36.    char m = 0;     char n = 0;     char o = 0;     char p = 0;
  37.    if (argc == 2)
  38.    {
  39.       if ((fp = fopen(argv[1], "r")) == NULL)
  40.          exit (EXIT_FAILURE);
  41.       else
  42.       {
  43.          fgets (encrypted, 14, fp);
  44.          salt[0] = encrypted[0];
  45.          salt[1] = encrypted[1];
  46.          salt[2] = '\0';
  47.       }
  48.    }
  49.    else
  50.       exit (EXIT_FAILURE);
  51.    temppw[1] = '\0';
  52.    for (i = 33; i < 126; i++)
  53.    {
  54.       temppw[0] = i;
  55.       temp = (char *) crypt(temppw, salt);
  56.       if (strcmp(encrypted, temp) == 0)
  57.       {
  58.          printf ("%s = %s \a\n", encrypted, temppw);
  59.          flag = 1;
  60.          break;
  61.       }   
  62.    }
  63.    if (flag) { exit (EXIT_SUCCESS); }
  64.    else { printf ("Password is at least 2 Characters Long\n"); }
  65.  
  66.    temppw[2] = '\0';
  67.    for (i = 33; i < 126; i++) {
  68.       if (flag) { exit (EXIT_SUCCESS); }
  69.    for (j = 33; j < 126; j++)
  70.    {
  71.       temppw[0] = i; temppw[1] = j;
  72.       temp = (char *) crypt(temppw, salt);
  73.       if (strcmp(encrypted, temp) == 0)
  74.       {
  75.          printf ("%s = %s \a\n", encrypted, temppw);
  76.          flag = 1;
  77.          break;
  78.       }
  79.    } }
  80.    if (flag) { exit (EXIT_SUCCESS); }
  81.    else { printf ("Password is at least 3 Characters Long\n"); }
  82.  
  83.  
  84.    temppw[3] = '\0';
  85.    for (i = 33; i < 126; i++) {
  86.    for (j = 33; j < 126; j++) {
  87.       if (flag) { exit (EXIT_SUCCESS); }
  88.    for (k = 33; k < 126; k++)
  89.    {
  90.       temppw[0] = i; temppw[1] = j; temppw[2] = k;
  91.       temp = (char *) crypt(temppw, salt);
  92.       if (strcmp(encrypted, temp) == 0)
  93.       {
  94.          printf ("%s = %s \a\n", encrypted, temppw);
  95.          flag = 1;
  96.          break;
  97.       }
  98.    } } }
  99.    if (flag) { exit (EXIT_SUCCESS); }
  100.    else { printf ("Password is at least 4 Characters Long\n"); }
  101.  
  102.  
  103.    temppw[4] = '\0';
  104.    for (i = 33; i < 126; i++) {
  105.    for (j = 33; j < 126; j++) {
  106.    for (k = 33; k < 126; k++) {
  107.       if (flag) { exit (EXIT_SUCCESS); }
  108.    for (l = 33; l < 126; l++)
  109.    {
  110.       temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
  111.       temp = (char *) crypt(temppw, salt);
  112.       if (strcmp(encrypted, temp) == 0)
  113.       {
  114.          printf ("%s = %s \a\n", encrypted, temppw);
  115.          flag = 1;
  116.          break;
  117.       }
  118.    } } } }
  119.    if (flag) { exit (EXIT_SUCCESS); }
  120.    else { printf ("Password is at least 5 Characters Long\n"); }
  121.  
  122.  
  123.    temppw[5] = '\0';
  124.    for (i = 33; i < 126; i++) {
  125.    for (j = 33; j < 126; j++) {
  126.    for (k = 33; k < 126; k++) {
  127.    for (l = 33; l < 126; l++) {
  128.       if (flag) { exit (EXIT_SUCCESS); }
  129.    for (m = 33; m < 126; m++)
  130.    {
  131.       temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
  132.       temppw[4] = m;
  133.       temp = (char *) crypt(temppw, salt);
  134.       if (strcmp(encrypted, temp) == 0)
  135.       {
  136.          printf ("%s = %s \a\n", encrypted, temppw);
  137.          flag = 1;
  138.          break;
  139.       }
  140.    } } } } }
  141.    if (flag) { exit (EXIT_SUCCESS); }
  142.    else { printf ("Password is at least 6 Characters Long\n"); }
  143.  
  144.  
  145.    temppw[6] = '\0';
  146.    for (i = 33; i < 126; i++) {
  147.    for (j = 33; j < 126; j++) {
  148.    for (k = 33; k < 126; k++) {
  149.    for (l = 33; l < 126; l++) {
  150.    for (m = 33; m < 126; m++) {
  151.       if (flag) { exit (EXIT_SUCCESS); }
  152.    for (n = 33; n < 126; n++)
  153.    {
  154.       temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
  155.       temppw[4] = m; temppw[5] = n;
  156.       temp = (char *) crypt(temppw, salt);
  157.       if (strcmp(encrypted, temp) == 0)
  158.       {
  159.          printf ("%s = %s \a\n", encrypted, temppw);
  160.          flag = 1;
  161.          break;
  162.       }
  163.    } } } } } }
  164.    if (flag) { exit (EXIT_SUCCESS); }
  165.    else { printf ("Password is at least 7 Characters Long\n"); }
  166.  
  167.  
  168.    temppw[7] = '\0';
  169.    for (i = 33; i < 126; i++) {
  170.    for (j = 33; j < 126; j++) {
  171.    for (k = 33; k < 126; k++) {
  172.    for (l = 33; l < 126; l++) {
  173.    for (m = 33; m < 126; m++) {
  174.    for (n = 33; n < 126; n++) {
  175.       if (flag) { exit (EXIT_SUCCESS); }
  176.    for (o = 33; o < 126; o++)
  177.    {
  178.       temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
  179.       temppw[4] = m; temppw[5] = n; temppw[6] = o;
  180.       temp = (char *) crypt(temppw, salt);
  181.       if (strcmp(encrypted, temp) == 0)
  182.       {
  183.          printf ("%s = %s \a\n", encrypted, temppw);
  184.          flag = 1;
  185.          break;
  186.       }
  187.    } } } } } } }
  188.    if (flag) { exit (EXIT_SUCCESS); }
  189.    else { printf ("Password is at least 8 Characters Long\n"); }
  190.  
  191.  
  192.    temppw[8] = '\0';
  193.    for (i = 33; i < 126; i++) {
  194.    for (j = 33; j < 126; j++) {
  195.    for (k = 33; k < 126; k++) {
  196.    for (l = 33; l < 126; l++) {
  197.    for (m = 33; m < 126; m++) {
  198.    for (n = 33; n < 126; n++) {
  199.    for (o = 33; o < 126; o++) {
  200.       if (flag) { exit (EXIT_SUCCESS); }
  201.    for (p = 33; p < 126; p++)
  202.    {
  203.       temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
  204.       temppw[4] = m; temppw[5] = n; temppw[6] = o; temppw[7] = p;
  205.       temp = (char *) crypt(temppw, salt);
  206.       if (strcmp(encrypted, temp) == 0)
  207.       {
  208.          printf ("%s = %s \a\n", encrypted, temppw);
  209.          flag = 1;
  210.          break;
  211.       }
  212.    } } } } } } } }
  213.    if (flag) { exit (EXIT_SUCCESS); }
  214.    else { printf ("Password uses characters other than 7-bit Ascii\n"); }
  215.  
  216.    return EXIT_SUCCESS;
  217. }
  218.